import ArrayQueue from '../Second/02_队列结构Queue/01_实现队列结构Queue';
// 击鼓传花
// 几个朋友一起玩游戏，围成一圈开始数数，数到某个数字的时候自动淘汰，
// 最后剩下的这个人会获得胜利，求最后剩下的是原来哪一个位置上的人

// 一个函数，接收一个数组，接收一个数字(当数到的是这个值的时候，淘汰)

// 假设数到的是3的时候出队
// 将这个数组遍历全部入队，然后从头开始出队，第一个是出队的是1，不是3，再次入队，第二个是2，出队，入队。第三个是3.出队，第四个重新数是1，入队出队

// 将最后出队的人返回，或者根据name找到对应的索引

function HotPotato(names:string[],num:number):number{
    if (names.length === 0) return -1;
    const queue = new ArrayQueue<string>();

    for(let i = 0; i < names.length; i++){
        queue.enqueue(names[i]);
    }
    while(queue.size() > 1){
        //这里的i是第一个数的数，从1开始数
        for(let i = 1; i < num; i++){
            const name = queue.dequeue()
            if (name) queue.enqueue(name)
        }
        queue.dequeue();
    }   
    const lastName = queue.dequeue()!;
    const index = names.indexOf(lastName)
    return index;
}

const leftIndex = HotPotato(['a','b','c','d','e'],3)
console.log(leftIndex)
